// 第二种、使用构造器constructor来赋值默认值
// Person
class Person {
    name: string
    age: number
    constructor(name: string, age: number) {
        this.name = name
        this.age = age
    }
    eating() {
        console.log('eating');
    }
}
// 此时stuadent和techar都需要name\age\eating方法
class student extends Person {
    id: number
    constructor(name: string, age: number, id: number) {
        // 此时name和age是父类的，使用super代表继承
        super(name, age) //父
        this.id = id
    }
    
    // 当不满足父类给予的id时，可重复声明方法，这种会替换掉父级的方法
    // eating() {
    //     console.log('stueating');
    // }


    // 当子类想要先执行父类的方法，并且也要执行子类的方法，super
    eating() {
        super.eating()   //父
        console.log('stueating'); //子
    }

    stu() {
        console.log('stu');
    }
}
const p = new student('str', 12, 1001)
console.log(p);
p.eating(); 